package cn.iocoder.yudao.module.eval.dal.dataobject.announcement;

import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 公告发布 DO
 *
 * @author 芋道源码
 */
@TableName("eval_announcements")
@KeySequence("eval_announcements_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EvalAnnouncementDO extends TenantBaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;
    
    /**
     * 计划ID，关联eval_plans表
     */
    private Long planId;
    
    /**
     * 模板ID，关联system_notify_template表
     */
    private Long templateId;
    
    /**
     * 公告类型：plan-计划公告，score-成绩公告，notice-通知公告
     */
    private String announcementType;
    
    /**
     * 公告标题
     */
    private String title;
    
    /**
     * 公告内容
     */
    private String content;
    
    /**
     * 发布状态：0-草稿，1-待审核，2-已审核，3-已发布，4-已撤回，5-已过期
     */
    private Integer publishStatus;
    
    /**
     * 发布渠道，逗号分隔：system,website,email,sms,wechat
     */
    private String publishChannels;
    
    /**
     * 发布时间
     */
    private LocalDateTime publishTime;
    
    /**
     * 定时发布时间
     */
    private LocalDateTime scheduledPublishTime;
    
    /**
     * 公示开始日期
     */
    private LocalDate publicityStartDate;
    
    /**
     * 公示结束日期
     */
    private LocalDate publicityEndDate;
    
    /**
     * 公示天数
     */
    private Integer publicityDays;
    
    /**
     * 目标受众：all-全员，department-部门，candidate-参评人员
     */
    private String targetAudience;
    
    /**
     * 目标群体，逗号分隔
     */
    private String targetGroups;
    
    /**
     * 查看次数
     */
    private Integer viewCount;
    
    /**
     * 下载次数
     */
    private Integer downloadCount;
    
    /**
     * 异议数量
     */
    private Integer objectionCount;

}
